<?php

/**
 * Maneja las sesiones de los usuarios del sistemas
 * @package simertweb
 * @subpackage controllers 
 * @category Administración, Recaudación
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class Form_control extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('mhistorico');
        $this->load->library('encrypt');
    }

    /**
     * Valida que el usuario exista
     * @return boolean
     */
    function acceso_check2() {
        $user1 = $_POST['nombre'];
        $clave1 = md5($_POST['pass']);
        $this->load->model('login/form_model', 'uum');
        $extraer = $this->uum->datos($user1, $clave1);
        $conteo = $this->uum->datos($user1, $clave1);

        foreach ($extraer as $c) {
            $user2 = $c->usuario;

            $clave2 = $c->contraseña;
            $rol = $c->idRol;
        }

        if ($extraer == null) {
            $clave2 = '';
        }

        if ($conteo > 0) {
            if ($clave1 != $clave2) {
                $this->form_validation->set_message('acceso_check2', 'Nombre de usuario y/o contraseña incorrecta');
                return FALSE;
            } else {
                return TRUE;
            }
        }
    }

    /**
     * Permite el acceso al sisstema de acuedo al tipo de usuario
     */
    public function Login() {
        $this->form_validation->set_rules('nombre', ' ', 'required|max_length[20]|callback_acceso_check2');
        $this->form_validation->set_rules('pass', ' ', 'required');
        $this->form_validation->set_rules('required', 'el campo %s esta vacio');
        $this->form_validation->set_rules('max_length', 'el campo %s no debe contener más de %s');

        if (!isset($_POST['nombre'])) {
            if ($this->session->userdata("usuario")) {
                $this->load->view("login/cerrar");
            } else {
                $this->load->view('autenticacion');
            }
        } else {
            if ($this->form_validation->run() == FALSE) {
                $this->load->view('autenticacion');
            } else {
                $user1 = $_POST['nombre'];
                $clave1 = md5($_POST['pass']);
                $this->load->model('login/form_model', 'uum');
                $extraer = $this->uum->datos($user1, $clave1);
                $conteo = $this->uum->datos($user1, $clave1);

                foreach ($extraer as $c) {
                    $user2 = $c->usuario;
                    $clave2 = $c->contraseña;
                    $rol = $c->idRol;
                }

                if ($extraer == null) {
                    $clave2 = '';
                }

                if ($conteo > 0) {
                    if ($clave1 === $clave2) {
                        $arreglo = array
                            ('usuario' => $user1, 'online' => TRUE);

                        $this->session->set_userdata($arreglo);
                        $this->db->where('idRol', $rol);
                        $query = $this->db->get('rol')->row();

                        //var_dump($this->session->userdata('usuario'));
                        $this->mhistorico->guardar_acceso(0, "Acceso al sistema");
//                        $data = array(//obtiene los datos del formulario y los almacena en las variables
//                            'usuario' => $this->session->userdata('usuario')                        
//                        );
//                        $this->db->insert('ci_sessions', $data);

                        if ($query->tipo == 'ADMINISTRADOR') {

                            $this->load->view('includes/menu_izquierdo');
                            $this->load->view('includes/cabecera');
                            $this->load->view('principal_administrador');
                            $this->load->view('includes/footer');
                        } else {
                            if ($query->tipo == 'RECAUDADOR') {
                                $this->load->view('includes/menu_izquierdo1');
                                $this->load->view('includes/cabecera1');
                                $this->load->view('principal_recaudador');
                                $this->load->view('includes/footer');
                            } else {
                                if ($query->tipo == 'RECARGA WEB') { 
                                    Response . Redirect("../recargasweb/principal_recargas?var=$user1");
                                    Response . End;
                                    
                                }
                            }
                        }

                        // $this->load->view('login/form_exito');
                    } else {
                        $this->load->view('autenticacion');
                    }
                } else {
                    $data['error'] = "El usuario no existe en la base de datos";
                    $this->load->view('login/form_view', $data);
                }
            }
        }
    }

    /**
     * Redirecciona al sistema principal de recargas electónicas
     * @param type $uri es la dirección web de la principal de recargas electónicas
     * @param type $method
     * @param type $http_response_code
     */
    function redirect1($uri = '', $method = 'location', $http_response_code = 302) {
        $uri2 = substr(site_url($uri), strlen(site_url()));
        if (!preg_match('#^https?://#i', $uri2)) {
            $uri = site_url($uri);
        }
        switch ($method) {
            case 'refresh' : header("Refresh:0;url=" . $uri2);
                break;
            default : header("Location: " . $uri2, TRUE, $http_response_code);
                break;
        }
        exit;
    }

    /**
     * Cierra la sesión de un usuario del sistema
     */
    public function Cerrar() {
        if ($this->session->userdata("usuario") == TRUE) {
            $this->session->sess_destroy();
            $this->load->view("autenticacion");
        } else {
            $this->session->sess_destroy();
            $this->load->view("autenticacion");
        }
    }

}

?>
